# 定义一个用于求和的闭包
# 闭包三个条件
# 1 有嵌套: 定义内外部函数(func_out, func_inner)
# 2 有引用: 内部函数引用外部函数的变量
# 3 有返回: 外部函数返回内部函数名称

# 测试闭包 实例化闭包/执行闭包 (闭包可缓存上一个时间步的运算结果)


# 1 有嵌套
def func_out(num1):
    def func_inner(num2):
        # 2 有引用
        sum = num1 + num2
        print('两数之和:', sum)

    # 3 有返回
    return func_inner


if __name__ == '__main__':
    # 测试闭包 实例化闭包/执行闭包
    myf = func_out(10)
    print(type(myf))
    # 闭包:可以缓存上一个时间步的运算结果
    myf(1)
    myf(2)
    myf(3)
    print('闭包作用: 保存函数内的变量')

